using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace JGSY.CMS.LowCode.Platform.Application.Interfaces
{
    /// <summary>
    /// 用户有效权限查询服务
    /// 负责汇总用户的角色-权限，提供权限判断与缓存。
    /// </summary>
    public interface IUserPermissionService
    {
        /// <summary>
        /// 获取用户的有效权限代码集合（已去重）。
        /// </summary>
        Task<HashSet<string>> GetEffectivePermissionsAsync(long userId, CancellationToken cancellationToken = default);

        /// <summary>
        /// 判断用户是否具备指定权限代码。
        /// </summary>
        Task<bool> HasPermissionAsync(long userId, string permissionCode, CancellationToken cancellationToken = default);

        /// <summary>
        /// 使用户权限缓存失效（角色/权限变更后调用）。
        /// </summary>
        void InvalidateCache(long userId);
    }
}
